Kempe Double-Kite Linkage

To move the linkage manually move the BLUE point.  To automate the movement give the Speed slider a non-zero value. If this fails to work (which can happen after clicking the  reset icon) then right-click on the BLUE point and select "Animation on" or alternatively just reload the page.

Frame DImensions

Animation Speed

Locus

Linkage

Construction 1

Angle 3

Angle 1

Lengths of sides are 4x, 2x and x, respectively.

Condition on sides

A1

P.Lines

Corr

Alt

Result

Angle 2

BasePoint_1 = Intersect(xAxis, yAxis)
ω = 4.74 (slider from 2 * Δω to 20, step 0.1)
h_1 = 4.5 (slider from Δω to 20, step 0.1)
h_2 = 4.5 (slider from Δω to 20, step 0.1)
B: (0, h_1)
C: (ω, h_2)
BasePoint_2: (ω, 0)
Δω = 0.28 (slider from 0 to 2, step 0.01)
P_1: (-Δω, h_1)
P_2: (-Δω, -Δω)
P_3: (ω + Δω, -Δω)
P_4: (ω + Δω, h_2)
P_5: (ω - Δω, h_2)
P_6: (ω - Δω, Δω)
P_7: (Δω, Δω)
P_8: (Δω, h_1)
C_1: (0, h_1 + Δω)
C_2: (ω, h_2 + Δω)
poly1, p_1, p_2, p_3, p_4, p_5, p_6, p_7, p_8 = Polygon(P_1, P_2, P_3, P_4, P_5, P_6, P_7, P_8)
c = CircumcircleArc(P_8, C_1, P_1)
d = CircumcircleArc(P_4, C_2, P_5)
A = (-3.92, 6.02)
D = (-1.26, 6.02)
E = (-1.26, 2.36)
F = (-3.92, 2.36)
poly2, a_1, d_1, e, f = Polygon(A, D, E, F)
a = 1.2 (slider from 0 to 5, step 0.1)
g = Circle(B, a)
k = Circle(C, 3 * a)
Speed = 0 (slider from -10 to 10, step 0.1)
A_1 = (-3.92, 2.22)
D_1 = (-1.26, 2.22)
E_1 = (-1.26, 0.3)
F_1 = (-3.92, 0.3)
poly2_1, a_2, d_2, e_1, f_1 = Polygon(A_1, D_1, E_1, F_1)
h = Circle(B, ω / 3)
G = Point(h)
b = Segment(B, G)
i = Line(C, b)
j = Line(B, C)
l = Line(G, j)
H = Intersect(i, l)
p = Circle(H, Radius[h])
u = Vector(G, H)
H' = Translate(H, Vector[u / 3])
m = Segment(C, H)
n = Segment(G, H')
q = LineBisector(C, H')
r = Segment(C, H')
I = Intersect(q, r)
H'_1 = Mirror(H, I)
s = Ray(I, H'_1)
t = Circle(H', 2 * ω / 3)
c_1 = Circle(H', 2 * ω / 3)
g_1 = Circle(C, 2 * ω / 3)
J = Intersect(c_1, g_1, 2)
b_1 = Segment(C, J)
i_1 = Segment(J, H')
j_1 = Line(G, J)
H'' = Mirror(H', j_1)
k_1 = Segment(G, H'')
l_1 = Segment(H'', J)
K = Intersect(n, k_1)
L = Intersect(k_1, b_1)
M = Intersect(i_1, b_1)
N = Intersect(n, i_1)
O = Intersect(m, n)
P = Intersect(l_1, k_1)
q_1 = Circle(B, C)
r_1 = Circle(C, B)
Q, S = Intersect(r_1, b)
R, T = Intersect(q_1, b_1)
loc1 = Locus(P, G)
v = false
o = false
m_1 = Line(P, M)
n_1 = Line(G, N)
U = Point(m_1)
V = Point(n_1)
s_1 = Line(U, V)
t_1 = Line(R, O)
W = Intersect(t_1, s_1)
Z = Intersect(n_1, m_1)
B_1 = Point(t_1)
b_2 = Line(U, B_1)
G_1 = Intersect(n_1, b_2)
c_2 = Segment(Z, M)
e_2 = Segment(Z, N)
f_2 = Segment(W, N)
g_2 = Segment(W, O)
i_2 = Segment(G_1, R)
w = false
z = false
δ = Angle(G, P, M)
ε = Angle(M, N, G)
ζ = Angle(O, R, M)
o_1 = false
u_1 = false
v_1 = false
j_2 = OrthogonalLine(G, e_2)
k_2 = OrthogonalLine(Z, e_2)
l_2 = OrthogonalLine(P, k_2)
H_1 = Intersect(l_2, j_2)
I_1 = Intersect(k_2, l_2)
n_2 = OrthogonalLine(M, j_2)
J_1 = Intersect(j_2, n_2)
K_1 = Intersect(k_2, n_2)
m_2 = Segment(J_1, K_1)
q_2 = Segment(K_1, M)
r_2 = Segment(Z, N)
w_1 = false
η = Angle(P, M, J_1)
θ = Angle(J_1, M, R)
z_1 = false
o_2 = false
s_2 = OrthogonalLine(R, r_2)
L_1 = Intersect(m_2, s_2)
ι = Angle(M, L_1, P)
M_1 = Intersect(n, s_2)
κ = Angle(N, M_1, R)
t_2 = Circle(R, 4)
N_1, O_1 = Intersect(t_2, s_2)
a_3 = Segment(N_1, O_1)
poly3, p_9, r_3, m_3 = Polygon(R, M, P)
u_2 = false
μ = Angle(R, M, N)
v_2 = false
loc2 = Locus(P, G)
λ = Angle(N, G, P)
loc3 = Locus(P, G)
γ = Angle(N, G_1, M)
β = Angle(M, W, R)
α = Angle(G, Z, P)